class Solution {
 public:
  TreeNode* pre = nullptr;
  TreeNode* convertBST(TreeNode* root) {
    traverse(root);
    return root;
  }
  void traverse(TreeNode* cur) {
    if (!cur) return;
    traverse(cur->right);
    if (pre) {
      cur->val += pre->val;
    }
    pre = cur;
    traverse(cur->left);
  }
};
// 从树中可以看出累加的顺序是右中左，
// 所以我们需要反中序遍历这个二叉树，然后顺序累加就可以了。